﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using _4.Modelado.Finanzas;

namespace _3.Datos.Finanzas
{
    public class RazonMovimientoBD
    {
        public void Razon_MovimientoGuardar(SqlCommand comando, RazonMovimiento obj)
        {
            try
            {
                string sp = "usp_RazonMovimientoGuardar";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@PK_RazonMovimiento", SqlDbType.Int));
                comando.Parameters.Add(new SqlParameter("@FKTipoMov_RazonAjuste", SqlDbType.VarChar));
                comando.Parameters.Add(new SqlParameter("@RazonAjusteDescripcion", SqlDbType.VarChar));


                comando.Parameters[0].Value = obj.iPK_RazonMovimiento;
                comando.Parameters[1].Value = obj.sFKTipoMov_RazonAjuste;
                comando.Parameters[2].Value = obj.sRazonMovDescripcion;


                comando.ExecuteNonQuery();


            }
            catch (Exception exc)
            {

                throw exc;
            }
        }



        public List<RazonMovimiento> Razon_MovimientoConsultar(SqlCommand comando)
        {
            try
            {
                string sp = "usp_RazonMovimientoConsultar";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                IDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                var ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];
                var lista = new List<RazonMovimiento>();

                for (int i = 0; i < dt.Rows.Count; i++)
                {
                    var obj = new RazonMovimiento();
                    obj.iPK_RazonMovimiento = Convert.ToInt32(dt.Rows[i]["PK_RazonMovimiento"]);
                    obj.sRazonMovDescripcion = dt.Rows[i]["RazonMovDescripcion"].ToString();
                    obj.sFKTipoMov_RazonAjuste = (dt.Rows[i]["FKTipoMov_RazonAjuste"]).ToString();
                    obj.sTipoMovimientoNombre = (dt.Rows[i]["TipoMovimientoNombre"]).ToString();
                    

                    lista.Add(obj);
                }
                return lista;
            }
            catch (Exception exc)
            {

                throw exc;
            }
        }


        public DataTable LlenarComboTiposMovimiento(SqlCommand comando)
        {
            try
            {
                string sp = "usp_TipoMovimientoConsultar";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                IDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                var ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];


                return ds.Tables[0];
            }
            catch (Exception exc)
            {

                throw exc;
            }
        }

        public DataTable LlenarComboIEMovimiento(SqlCommand comando)
        {
            try
            {
                string sp = "usp_TipoMovimiento_Combo";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                IDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                var ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];


                return ds.Tables[0];
            }
            catch (Exception exc)
            {

                throw exc;
            }
        }

        public DataTable LlenarComboRazon_PorMovimiento(SqlCommand comando, string FKTipoMov_RazonAjuste)
        {
            try
            {
                string sp = "usp_Razon_PorMovimientoConsultar";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();
                
                comando.Parameters.Add(new SqlParameter("@FKTipoMov_RazonAjuste", SqlDbType.VarChar));
                


                comando.Parameters[0].Value = FKTipoMov_RazonAjuste;

                IDataAdapter da = new SqlDataAdapter((SqlCommand)comando);
                var ds = new DataSet();
                da.Fill(ds);

                DataTable dt = ds.Tables[0];


                return ds.Tables[0];
            }
            catch (Exception exc)
            {

                throw exc;
            }
        }

        public void Razon_MovimientoEliminar(SqlCommand comando, RazonMovimiento obj)
        {
            try
            {
                string sp = "usp_RazonMovimientoEliminar";

                comando.CommandType = CommandType.StoredProcedure;
                comando.CommandText = sp;
                comando.Parameters.Clear();

                comando.Parameters.Add(new SqlParameter("@PK_RazonMovimiento", SqlDbType.Int));
                comando.Parameters[0].Value = obj.iPK_RazonMovimiento;


                comando.ExecuteNonQuery();

            }
            catch (Exception e)
            {

                throw e;
            }
        }
    }
}
